package com.timmy.google_play.base;

import android.view.View;

import butterknife.ButterKnife;

/**
 * Created by Timmy on 2016/12/8.
 * 1. 提供视图
 * 2. 接收,加载数据
 * 3. 数据和视图的绑定
 */

public abstract class BaseHolder<T> {


    public final View holdView;
    private      T    mData;

    public BaseHolder() {

        holdView = initHolderVIew();

        ButterKnife.bind(this, holdView);

        holdView.setTag(this);

    }

    /**
     * 决定Holder所能提供的视图
     * Holder 对象创建的时候被调用
     * BaseHolder 不知道具体的实现,交由子类去出现
     */
    protected abstract View initHolderVIew();

    public void setDataAndRefreshHolderView(T data) {
        mData = data;

        refreshHolderView(data);
    }

    /**
     * 数据和视图的绑定
     * @call 外界调用 setDataAndRefreshHolderView 方法的时候会调用这个方法
     */
    protected abstract void refreshHolderView(T data);

}
